package br.com.damazzy.manterTipoProduto {
	
	import br.com.damazzy.util.TratamentoErros;
	import br.com.damazzy.vo.TipoProdutoVO;
	
	import flash.events.Event;
	import flash.events.MouseEvent;
	
	import mx.controls.Alert;
	import mx.events.CloseEvent;
	import mx.events.FlexEvent;
	import mx.managers.PopUpManager;
	import mx.rpc.events.FaultEvent;
	import mx.rpc.events.ResultEvent;
	
	public class TipoProdutoEdicao extends TipoProdutoEdicaoView {
		
		private var _telaPai: TipoProdutoSelecao;
		private var _vo: TipoProdutoVO;
		
		public function TipoProdutoEdicao(vo: TipoProdutoVO) {
			super();
			
			_vo = vo;
			this.addEventListener(FlexEvent.CREATION_COMPLETE, init);
		}
		
		private function init(event: FlexEvent): void {
			
			btnSalvar.addEventListener(MouseEvent.CLICK, salvar);
			btnFechar.addEventListener(MouseEvent.CLICK, fechar);
			
			this.addEventListener(CloseEvent.CLOSE, fechar);
			
			rm.incluir.addEventListener(ResultEvent.RESULT, resultIncluir);
			rm.incluir.addEventListener(FaultEvent.FAULT, TratamentoErros.fault);
			rm.alterar.addEventListener(ResultEvent.RESULT, resultAlterar);
			rm.alterar.addEventListener(FaultEvent.FAULT, TratamentoErros.fault);
			
			limparDados();
			
			if (_vo != null) {
				this.alterar();
			} else {
				this.incluir();
			}
		}
		
		private function fechar(event: Event = null): void {
			PopUpManager.removePopUp(this);
			_telaPai.pesquisar();
		}
		
		private function limparDados(): void {
			txtDescricao.text = "";
		}
		
		private function validarDados(): Boolean {
			
			var msg: String = "O campo ";
			var validacaoOk: Boolean = true;
			
			if (txtDescricao.text == "") {
				msg += "Descrição";
				validacaoOk = false;
				
			}
			
			msg += " é de preenchimento obrigatório.";
			
			if (!validacaoOk) {
				Alert.show(msg, "Erro!");
			}
			
			return validacaoOk;
		}
		
		private function salvar(event: MouseEvent): void {
			
			if (validarDados()) {
				
				var novaVO: TipoProdutoVO = new TipoProdutoVO();
				novaVO.descricao = txtDescricao.actualText;
				
				if (_vo != null && _vo.idTipoProduto != null && _vo.idTipoProduto != "") {
					novaVO.idTipoProduto = _vo.idTipoProduto;
					rm.alterar(novaVO);
				} else {
					rm.incluir(novaVO);
				}
			}
		}
		
		private function resultIncluir(result: ResultEvent): void {
			Alert.show("Tipo de produto incluído com sucesso.", "Aviso!");
			limparDados();
		}
		
		private function resultAlterar(result: ResultEvent): void {
			Alert.show("Tipo de produto alterado com sucesso.", "Aviso!");
			fechar();
		}
		
		private function incluir(): void {
			limparDados();
		}
		
		private function alterar(): void {
			txtDescricao.actualText = _vo.descricao;
		}

		public function set telaPai(telaPai: TipoProdutoSelecao): void {
			_telaPai = telaPai;
		}
	}
}